<?php
/*Модуль для создания выподающих списков в виде класса
Автор: Andrew Shapovalov
Созданно: 14.02.2010
Обновленно: 
*/

//Класс выподающего списка
class SHAV_DropList
{
	var $content = '';
	var $idList = '';
	var $nameList = '';
	var $syleList = '';
	var $isDisable = 'false';
	var $action = '';
	var $dataArray = array(array('value' => '0', 'title' => 'Choose ...', 'isSelect' => 'true'), array('value' => '1', 'title' => 'Some string', 'isSelect' => 'false'));
	
	function SHAV_DropList()
	{
		$this->content = '';
	}
	
	/*Создает выводающий список.
	ПАРАМЕТРЫ:
		$params - массив параметров для указания стиля списка и названия для формы;
		$data - массив данных для добавления в список;
		$isDraw - выыодить или нет список.
	РЕЗУЛЬТАТ:
		Объект класса*/
	function createListFromArray($params = array('style_class' => '', 'name' => 'frm_list', 'disable'=>'false'), $data = array(array('value' => '0', 'title' => 'Choose ...', 'isSelect' => 'true'), array('value' => '1', 'title' => 'Some string', 'isSelect' => 'false')))
	{
		if(empty($params))
			return MSG_ARRAYS_0001;

		$this->idList = $params['name'];
		$this->nameList = $params['name'];
		$this->syleList = $params['style_class'];
		$this->isDisable = $params['disable'];
		$this->dataArray = $data;

		$this->content = '';
	}

	/*Вывести список*/
	function drawList($isDraw = false)
	{
		$disabled = '';
		if($this->isDisable == 'true')
			$disabled = 'disabled';
		$this->content  = '<select class="'.$this->syleList.'" name="'.$this->nameList.'" id="'.$this->nameList.'" '.$disabled.' '.$this->action.'>';
		$i = 0;
		foreach($this->dataArray as $rec)
		{
			if($rec['isSelect'] == 'true')
				$this->content .= '<option value="'.$rec['value'].'" selected>'.$rec['title'].'</option>';
			else
				$this->content .= '<option value="'.$rec['value'].'">'.$rec['title'].'</option>';
			
			$i++;
		}
		$this->content .= '</select>';
		
		if($isDraw == true)
			echo $this->content;
		else
			return $this->content;
	}
	
	/*Создает выподающий список по таблице из БД
	ПАРАМЕТРЫ:
		$params_table - массив описывающий таблицу из которой бурется данные: array('name' => '', 'id_field' => '', 'name_field' => '');
		$name - идентификатор списка в форме;
		$select - идентификатор записи в таблице (и в списке), который следует выбрать;
		$disable - выключен или нет список;
		$style - стиль списка;
		$isDraw - Выводить или вернуть html-код.
	РЕЗУЛЬТАТ:
		Объект класса*/
	function createListFromDBTable($params_table, $name = '', $select = 0, $disable = 'false', $style = '')
	{
		global $shavDB;
		
		$sql = 'SELECT * FROM '.$params_table['name'];
		$results = $shavDB->get_results($sql);
		$data[] = array('value' => '0', 'title' => 'Choose ...', 'isSelect' => 'true');
		foreach($results as $rec)
		{
			if((int)$select == $rec[$params_table['id_field']])
			$data[] = array('value' => $rec[$params_table['id_field']], 'title' => $rec[$params_table['name_field']], 'isSelect' => 'true');
			else
				$data[] = array('value' => $rec[$params_table['id_field']], 'title' => $rec[$params_table['name_field']], 'isSelect' => 'false');
		}

		$this->createListFromArray(array('style_class' => $style, 'name' => $name, 'disable' => $disable), $data);
	}
	
	/*Создает список из SQL-запроса
	ПАРАМЕТРЫ:
		$sql - SQL-запрос, на базе которого необходимо создать список;
		$field_value - Поле из БД, которое будет выступать в качестве значений пунтка;
		$field_text - Поле из БД, которое будет выступать в качестве текста пунска.
	РЕЗУЛЬТАТ:
		Объект класса*/
	function createListFromSQL($sql, $field_value, $field_text, $name, $SelectElem = 0, $disable = 'false', $style = '')
	{
		global $shavDB;

		$results = $shavDB->get_results($sql);
		$data[] = array('value' => '0', 'title' => 'Choose ...', 'isSelect' => 'true');
		foreach($results as $rec)
		{
			if((int)$SelectElem == $rec[$field_value])
				$data[] = array('value' => $rec[$field_value], 'title' => $rec[$field_text], 'isSelect' => 'true');
			else
				$data[] = array('value' => $rec[$field_value], 'title' => $rec[$field_text], 'isSelect' => 'false');
		}

		$this->createListFromArray(array('style_class' => $style, 'name' => $name, 'disable' => $disable), $data);
	}
}
?>